Repository navigation
Keep the hero prism when the footage paints nothing, and draw its light crisp - #129
Merged
Merged
Conversation
…ht crisp The hero hid the still prism plate on the video's 'playing' event. A browser can run the clock and present no frames: the owner's Safari 27 did that for every clip (121 of 121 frames dropped, requestVideoFrameCallback never fired), so the prism slot went empty while the beam and dust still came on. The plate now steps aside only once requestVideoFrameCallback reports a frame and the footage is unhidden, whichever comes last, and settle() drops footage that never produced a frame in favor of the plate. A frame can be reported for the hidden element (Firefox on load, any engine while paused off screen), hence the hidden check. Browsers without the API keep the old swap on 'playing'. The light layer is drawn crisp: the flow band hugs the beam line (2u core, tilted 1.29deg to its fall) instead of a 12u soft strip, and dust motes are whole-device-pixel points instead of sub-pixel discs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two fixes to the hero seam, found in the owner's Safari:
playingevent, before any frame had painted. Safari 27 on the owner's Mac ran the clip's clock but presented no frames at all (121 of 121 dropped,requestVideoFrameCallbacknever fired, even for a synthetic test clip), so the prism slot went empty while the beam and dust still came on. The plate now steps aside only oncerequestVideoFrameCallbackreports a frame and the footage is unhidden, whichever comes last;settle()drops footage that never produced a frame and keeps the plate. Browsers without the API keep the old swap onplaying. The hidden check matters because a frame can be reported for the still-hidden element (Firefox on load, any engine while paused off screen), which would otherwise leave the slot empty for a frame or, with reduced motion switched on mid-load, for good.Checks:
playingin Chromium, 16 ms in WebKit).node --test tests/*.test.mjs49/49, privacy scan clean.The repo has no browser test harness in CI, so the probes above live outside the repo.